草庐IT

c++ - RAII 和 C++ STL

全部标签

C++:const 类成员的 STL 问题

这是一个开放式问题。有效的C++。第3项。尽可能使用const。真的吗?我想做任何在对象生命周期内不会改变的东西。但是const也有它自己的麻烦。如果一个类有任何const成员,编译器生成的赋值运算符将被禁用。如果没有赋值运算符,一个类将无法使用STL。如果您想提供自己的赋值运算符,则需要const_cast。这意味着更多的忙碌和更多的错误空间。您多久使用一次const类成员?编辑:作为一项规则,我争取const的正确性,因为我做了很多多线程。我很少需要为我的类实现复制控制,也从不删除代码(除非绝对必要)。我觉得const的当前状态与我的编码风格相矛盾。const迫使我实现赋值运算符,

C++:const 类成员的 STL 问题

这是一个开放式问题。有效的C++。第3项。尽可能使用const。真的吗?我想做任何在对象生命周期内不会改变的东西。但是const也有它自己的麻烦。如果一个类有任何const成员,编译器生成的赋值运算符将被禁用。如果没有赋值运算符,一个类将无法使用STL。如果您想提供自己的赋值运算符,则需要const_cast。这意味着更多的忙碌和更多的错误空间。您多久使用一次const类成员?编辑:作为一项规则,我争取const的正确性,因为我做了很多多线程。我很少需要为我的类实现复制控制,也从不删除代码(除非绝对必要)。我觉得const的当前状态与我的编码风格相矛盾。const迫使我实现赋值运算符,

c++ - C 语言还在游戏引擎中被广泛使用吗?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭2年前。Improvethisquestion标题有点用词不当,我的意思是“Cwithclasses”。让我解释一下,最近我买了一本书ShaderX7,它附带了Unigine引擎的精简版(和旧版)拷贝,用于其中一篇关于阴影映射技术的文章。当我意识到,虽然作者使用C++和继承以及所有C++优点时,我正在涉足代码,但大多数(如果不是全部)方法内容本质上是C风格的代码;例如:intShader::get_param(constchar*na

c++ - C 语言还在游戏引擎中被广泛使用吗?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭2年前。Improvethisquestion标题有点用词不当,我的意思是“Cwithclasses”。让我解释一下,最近我买了一本书ShaderX7,它附带了Unigine引擎的精简版(和旧版)拷贝,用于其中一篇关于阴影映射技术的文章。当我意识到,虽然作者使用C++和继承以及所有C++优点时,我正在涉足代码,但大多数(如果不是全部)方法内容本质上是C风格的代码;例如:intShader::get_param(constchar*na

c++ - 哪个 STL 容器最适合 std::sort? (这还重要吗?)

标题不言自明....容器的选择是否会以某种方式影响默认std::sort算法的速度?比如我用list,排序算法是切换节点指针还是切换节点中的全部数据? 最佳答案 选择确实会产生影响,但预测哪个容器最有效是非常困难的。最好的方法是使用对您的应用程序来说最容易使用的容器(可能是std::vector),看看该容器的排序是否足够快,如果是的话,坚持使用它。如果没有,请对您的排序问题进行性能分析,并根据配置文件数据选择不同的容器。作为一名前讲师和前培训师,我个人有时会为链表具有神秘的性能增强属性这一普遍观点负责。从一个知道的人那里知道:链表

c++ - 哪个 STL 容器最适合 std::sort? (这还重要吗?)

标题不言自明....容器的选择是否会以某种方式影响默认std::sort算法的速度?比如我用list,排序算法是切换节点指针还是切换节点中的全部数据? 最佳答案 选择确实会产生影响,但预测哪个容器最有效是非常困难的。最好的方法是使用对您的应用程序来说最容易使用的容器(可能是std::vector),看看该容器的排序是否足够快,如果是的话,坚持使用它。如果没有,请对您的排序问题进行性能分析,并根据配置文件数据选择不同的容器。作为一名前讲师和前培训师,我个人有时会为链表具有神秘的性能增强属性这一普遍观点负责。从一个知道的人那里知道:链表

c++ - 是否不可能将 STL 映射与结构一起用作键?

我有以下代码:structNode{inta;intb;};Nodenode;node.a=2;node.b=3;mapaa;aa[1]=1;//OK.mapbb;bb[node]=1;//Compileerror.当我尝试将结构Node的实例映射到int时,出现编译错误。为什么? 最佳答案 要使某事物可用作map中的键,您必须能够使用operator对其进行比较.您需要将这样的运算符添加到您的节点类中:structNode{inta;intb;booloperatora当然,真正的操作符做什么取决于比较对你的结构的实际意义。

c++ - 是否不可能将 STL 映射与结构一起用作键?

我有以下代码:structNode{inta;intb;};Nodenode;node.a=2;node.b=3;mapaa;aa[1]=1;//OK.mapbb;bb[node]=1;//Compileerror.当我尝试将结构Node的实例映射到int时,出现编译错误。为什么? 最佳答案 要使某事物可用作map中的键,您必须能够使用operator对其进行比较.您需要将这样的运算符添加到您的节点类中:structNode{inta;intb;booloperatora当然,真正的操作符做什么取决于比较对你的结构的实际意义。

C++ STL : list with Pointers - Iterator cannot access?

我正在为一个包含我的“对象”对象指针的STL列表而苦苦挣扎。我声明:listobjectlist;并通过以下方式插入:this->objectlist.push_back(newObject(address,value,profit));并尝试像在map和其他中一样进行迭代:list::iteratoriter;iter=this->objectlist.begin();while(iter!=this->objectlist.end()){iter->print();}其中print()是Object类的公共(public)方法;这里有什么问题?我无法通过迭代器访问列表中的对象?

C++ STL : list with Pointers - Iterator cannot access?

我正在为一个包含我的“对象”对象指针的STL列表而苦苦挣扎。我声明:listobjectlist;并通过以下方式插入:this->objectlist.push_back(newObject(address,value,profit));并尝试像在map和其他中一样进行迭代:list::iteratoriter;iter=this->objectlist.begin();while(iter!=this->objectlist.end()){iter->print();}其中print()是Object类的公共(public)方法;这里有什么问题?我无法通过迭代器访问列表中的对象?